home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 2001 November / macformat-109.iso / Demos / Alice Demo / demo / pak0.pk3 / scripts / utils.scr < prev    next >
Encoding:
Text File  |  2000-11-20  |  3.9 KB  |  210 lines

  1. #include "scripts/sound.scr"
  2.  
  3. vector   fog_color = '0 0 0';
  4. float    fog_distance = 0;
  5.  
  6. void setfarplane( vector newcolor, float fdistance )
  7.    {
  8.    fog_color = newcolor;
  9.    fog_distance = fdistance;
  10.  
  11.    $world.farplane_color( fog_color );
  12.    $world.farplane( fog_distance );
  13.    }
  14.  
  15. void fadefog( vector newcolor, float newdistance, float fogfadetime )
  16.    {
  17.    float    i;
  18.    float    n;
  19.    float    frontlerp;
  20.    float    backlerp;
  21.    vector   oldcolor;
  22.    float    olddist;
  23.  
  24.    oldcolor = fog_color;
  25.    olddist = fog_distance;
  26.  
  27.    n = fogfadetime / 0.05;
  28.    for( i = 0; i < n; i++ )
  29.       {
  30.       frontlerp   = i / n;
  31.       backlerp    = ( 1.0 - frontlerp );
  32.  
  33.       fog_color    = oldcolor * backlerp + newcolor * frontlerp;
  34.       fog_distance = olddist * backlerp + newdistance * frontlerp;
  35.  
  36.       $world.farplane_color( fog_color );
  37.       $world.farplane( fog_distance );
  38.  
  39.       wait( 0.05 );
  40.       }
  41.  
  42.    $world.farplane_color( newcolor );
  43.    $world.farplane( newdistance );
  44.    }
  45.  
  46. /*
  47.  
  48. The time it takes an object to reach its apogee is (initial velocity /
  49. acceleration)
  50.  
  51. The maximum height that an object reaches is ( initial velocity ^ 2 ) /
  52. ( 2 * acceleration )
  53.  
  54. Let initial velocity  = Vo
  55. Let acceleration = a
  56. Let Time = t
  57. Let Maximum Height = h
  58.  
  59. t = Vo        a = Vo
  60.       ----  or        ----
  61.        a               t
  62.  
  63. substituting this into the other equation we get:
  64.  
  65. h = Vo^2
  66.       -------
  67.       2 * a
  68.  
  69. h = Vo^2
  70.       -------
  71.       2 * Vo
  72.       ---------
  73.           t
  74.  
  75. h = Vo * t
  76.       --------
  77.           2
  78.  
  79. Solving for Vo and then substituting in the first equation will give you
  80. an acceleration
  81.  
  82.  
  83. h = ( v * v ) / ( 2 * a )
  84. h = ( v * v ) / ( 2v / t )
  85. h = v / ( 2 / t )
  86. h = ( v * t ) / 2
  87. 2h = vt
  88. v = 2ht
  89.  
  90.  
  91. a = 2ht/t
  92.  
  93. */
  94.  
  95. void FlipMove( entity org, entity tile, entity destination, vector rot, float height, float movetime )
  96.    {
  97.    float vel;
  98.    float acc;
  99.    float t;
  100.    float dist = 0;
  101.    float endtime;
  102.    vector r;
  103.  
  104. //
  105. // // try to correct inaccuracy
  106. // height -= height / ( movetime * 10 );
  107. //
  108. // t = movetime * 0.5;
  109. //
  110. // acc = ( 2 * height ) / ( t * t );
  111. // vel = acc * t;
  112. //
  113. // vel *= 0.05;
  114. // acc *= 0.05 * 0.05;
  115. //
  116. // endtime  = ( movetime + 0.0499 ) / 0.05;
  117. //
  118.  
  119.    //
  120.    // optimized version of above
  121.    //
  122.    t        = 0.1 / movetime;
  123.    vel      = 2 * t * ( height - height * t );
  124.    acc      = vel * t;
  125.    r        = rot * ( t * 0.5 );
  126.  
  127.    endtime  = movetime * 20;
  128.  
  129.    org.time( movetime );
  130.    org.movetoent( destination );
  131.  
  132.    tile.time( 0.05 );
  133.    for( t = 0; t < endtime; t++ )
  134.       {
  135.       dist += vel;
  136.  
  137.       tile.rotateto( r * t );
  138.  
  139.       // ADDED BY MBJ
  140.  
  141.       tile.playsound( "sound/ambience/special/flip1.wav" );
  142.  
  143.       // ADDED BY MBJ
  144.  
  145.       tile.moveUp( vel );
  146.       waitfor( tile );
  147.  
  148.       vel -= acc;
  149.       }
  150.  
  151.    if ( dist )
  152.       {
  153.       tile.moveDown( dist );
  154.       tile.rotateto( rot );
  155.       waitfor( tile );
  156.       }
  157.    }
  158.  
  159. void shrink_alice()
  160. {
  161. //        $player.holster();
  162.         wait(.1);
  163.         $player.god(0);
  164.         freezeplayer();
  165.         fakeplayer();
  166.         $fakeplayer.anim("death_falling");
  167.         float scalecount = 1;
  168.  
  169.         for(scalecount = 1; scalecount > 0; scalecount = scalecount - .05)
  170.             {
  171.                 $fakeplayer.scale(scalecount);
  172.                 wait(.1);
  173.             }
  174.         $fakeplayer.hide();
  175.         $player.hide();
  176.         $player.health(0);
  177.         $player.dead();
  178. }
  179.  
  180. // DHM - These are callable by entities or script.
  181. void DrugFade()
  182. {
  183.     if ( fadeisactive() == 0 )
  184.     {
  185.         cam_fadeout( 0.15, 0, 0, 0, 1, 0 );
  186.         wait( 0.1 );
  187.         drugview( 1 );
  188.         cam_fadein( 0.6, 1, 1, 1, 1, 2 );
  189.         wait( 0.5 );
  190.         cam_fadeout( 10, 1, 1, 1, 1, 2 );
  191.         wait( 4 );
  192.         drugview( 0 );
  193.         cam_fadein( 0.2, 0, 0, 0, 1, 0 );
  194.         wait( 0.2 );
  195.         clearfade();
  196.     }
  197. }
  198.  
  199. void IceFade()
  200. {
  201.     if ( fadeisactive() == 0 )
  202.     {
  203.         cam_fadein( 0.4, 0, 0, 0, 1, 3 );
  204.         wait( 0.35 );
  205.         cam_fadeout( 6, 0, 0, 0, 1, 3 );
  206.         wait( 6 );
  207.         clearfade();
  208.     }
  209. }
  210.